package com.example.barnes.ummo.fragment;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.example.barnes.ummo.Qs;
import com.example.barnes.ummo.R;
import com.example.barnes.ummo.SingleFragmentActivity;
import com.example.barnes.ummo.db.Db;
import com.example.barnes.ummo.holder.IconTreeItemHolder;
import com.example.barnes.ummo.holder.ProfileHolder;
import com.example.barnes.ummo.holder.SelectableHeaderHolder_2;
import com.example.barnes.ummo.holder.SelectableItemHolder;
import com.software.shell.fab.ActionButton;
import com.unnamed.b.atv.model.TreeNode;
import com.unnamed.b.atv.view.AndroidTreeView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
/**
* Created by barnes on 8/6/15.
*/
public class SelectableTreeFragment extends Fragment
{
private AndroidTreeView tView;
Db db;
public List<String> qServiceTypeList = null;
public List<String> qServiceProviderName = null;
public List<String> qServiceName = null;
public List<String> qsJoined = null;
ActionButton actionButton;
Context c;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_selectable_nodes, null, false);
ViewGroup containerView = (ViewGroup) rootView.findViewById(R.id.container);
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/Ubuntu-C.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
c = this.getActivity();
TreeNode root = TreeNode.root();
String string = ((SingleFragmentActivity)getActivity()).getCategoriesJSON();
try {
ArrayList<TreeNode> treeNodeList = new ArrayList<>();
ArrayList<TreeNode> treeNodeList2 = new ArrayList<>();
ArrayList<JSONObject> serviceNameColl = new ArrayList<>();
JSONArray array= new JSONArray(string);
qServiceTypeList = new ArrayList<String>();
for (int i =0; i<array.length();i++){
JSONObject object = array.getJSONObject(i);
String categoryName = object.getString("name");
qServiceTypeList.add(categoryName);
treeNodeList.add(new TreeNode(new IconTreeItemHolder.IconTreeItem(categoryName,R.string.ic_sd_storage)).setViewHolder(new ProfileHolder(getActivity())));
if (object.has("Providers")){
JSONArray providers = object.getJSONArray("Providers");
for (int j = 0; j < providers.length(); j++)
{
//Setting the Service Categories
JSONObject providerObj = providers.getJSONObject(j);
Log.d("object",providerObj.toString());
treeNodeList2.add(new TreeNode(new IconTreeItemHolder.IconTreeItem(providerObj.getString("name"),R.string.ic_folder)).setViewHolder(new SelectableHeaderHolder_2(getActivity())));
treeNodeList.get(i).addChildren(treeNodeList2.get(j));
/* getServicePID = db.getQServicePid(qServiceProviderName.get(j));
string_serviceProviderid = getServicePID.get(0);
int_serviceProviderid = Integer.parseInt(string_serviceProviderid);
qServiceName = db.getQServiceName(int_serviceProviderid);*/
if (providerObj.has("Services")){
JSONArray services = providerObj.getJSONArray("Services");
for (int k = 0; k < services.length(); k++) {
serviceNameColl.add(services.getJSONObject(k));
}
customfillFolder(treeNodeList2.get(j), serviceNameColl, "qServiceProviderName.get(i)");
}
}
}
serviceNameColl.clear();
treeNodeList2.clear();
}
Log.d("List",array.toString());
root.addChildren(treeNodeList);
}
catch (JSONException jse){
Log.e("JSON Error",jse.toString());
}
actionButton = (ActionButton) rootView.findViewById(R.id.action_button);
actionButton.setImageResource(R.drawable.fab_plus_icon);
actionButton.setButtonColor(getResources().getColor(R.color.fab_material_light_blue_500));
//actionButton.hide();
db = new Db(rootView.getContext());
db.open();
qsJoined = db.getQsJoined();
actionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
qsJoined = db.getQsJoined();
if (qsJoined.size() > 0) {
Intent i = new Intent();
i.setClass(c, Qs.class);
c.startActivity(i);
} else {
Toast.makeText(c, "You have not joined any ques yet", Toast.LENGTH_SHORT).show();
}
}
});
// = db.getAllQServiceTypesName();
int qServicesTypeSize = qServiceTypeList.size();
int int_servicetypeid;
String string_servicetypeid;
int int_serviceProviderid;
String string_serviceProviderid;
List<String> getServiceTId;
List<String> getServicePID;
for (int i = 0;i < qServicesTypeSize;i++)
{
/*if (qServiceTypeList.get(i) == "Financial Services_")
{
treeNodeList.add(new TreeNode(new IconTreeItemHolder.IconTreeItem(qServiceTypeList.get(i).toString(),R.drawable.currency9)).setViewHolder(new ProfileHolder(getActivity())));
}
else
{
treeNodeList.add(new TreeNode(new IconTreeItemHolder.IconTreeItem(qServiceTypeList.get(i).toString(),R.string.ic_sd_storage)).setViewHolder(new ProfileHolder(getActivity())));
}*/
//string_servicetypeid = getServiceTId.get(0);//id for displayed q service type
//int_servicetypeid = Integer.parseInt(string_servicetypeid);
//qServiceProviderName = db.getQServiceProviderName(int_servicetypeid);
/* */
//
}
tView = new AndroidTreeView(getActivity(), root);
tView.setDefaultAnimation(true);
containerView.addView(tView.getView());
if (savedInstanceState != null)
{
String state = savedInstanceState.getString("tState");
if (!TextUtils.isEmpty(state))
{
tView.restoreState(state);
}
}
tView.setSelectionModeEnabled(true);
return rootView;
}
private void customfillFolder(TreeNode folder, ArrayList<JSONObject> list, String serviceName)
{
List<String> qJoinedList = null;
//qJoinedList = db.getQName(serviceName);
try {
if (true) {
for (int i = 0; i < list.size(); i++) {
folder.addChildren(new TreeNode(list.get(i).getString("name")).setViewHolder(new SelectableItemHolder(getActivity(), list.get(i), "serviceName")));
}
} else {
for (int i = 0; i < list.size(); i++) {
folder.addChildren(new TreeNode(list.get(i)).setViewHolder(new SelectableItemHolder(getActivity(), list.get(i), "serviceName")));
}
}
}
catch(JSONException jse){
Log.e("Json Error Passing Qs",jse.toString());
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putString("tState", tView.getSaveState());
}
}